//
// Created by Administrator on 2022-11-29.
//

#include "CCTexture.h"
//引入stb_image
#define STB_IMAGE_IMPLEMENTATION
extern "C"{
#include "stb_image.h"
}

CCTexture::CCTexture() {

}

CCTexture::~CCTexture() {
    glDeleteTextures(6,m_texID);
}

void CCTexture::loadTexture(const char* fileName,int index){
    glEnable(GL_TEXTURE_2D);
    glGenTextures(1,&m_texID[index]);//产生纹理索引
    glBindTexture(GL_TEXTURE_2D,m_texID[index]);//绑定纹理索引，之后的操作都针对当前纹理索引
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//指当纹理图象被使用到一个大于它的形状上时
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);//指当纹理图象被使用到一个小于或等于它的形状上时
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    // 让图像正过来（如果不加图像是倒过来的）
    stbi_set_flip_vertically_on_load(true);
    // 加载并生成纹理
    unsigned char *data = stbi_load(fileName, &width, &height, &nrChannels, 0);
    if (data)
    {
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
    }
    // 释放资源
    stbi_image_free(data);
}